// function parseParam(url){
//   let paramsStr = /.+\?(.+)$/.exec(url)[1]
//   let paramsArr = paramsStr.split('&')
//   let paramsObj = {}
//   paramsArr.forEach(param => {
//     if(/=/.test(param)){
//       // 遍历这个数组 将数组每一项按照等号区分
//       let [key,val] = param.split('=')
//       val = decodeURIComponent(val)
//       val = /^\d+$/.test(val) ? parseFloat(val) : val
//       if(paramsObj[key]){
//         paramsObj[key] = [].concat(paramsObj[key],val)
//       }else{
//         paramsObj[key] = val
//       }
//     }else{
//       // 如果参数里面没有等号 那么该参数就是key 值就是true
//       paramsObj[param] = true
//     }
//   })
//   return paramsObj
// }
function parseParam (url) {
    let paramsStr = url.split('?')[1]
    let paramsArr = paramsStr.split('&')
    let paramsObj = {}
    for (let i = 0; i < paramsArr.length; i++) {
        let item = paramsArr[i]
        if (item.includes('=')) {
            let [key, val] = item.split('=')
            val = decodeURIComponent(val)
            if (paramsObj[key] === undefined) {
                paramsObj[key] = val
            } else if (paramsObj[key] instanceof Array) {
                paramsObj[key].push(val)
            } else {
                paramsObj[key] = [paramsObj[key], val]
            }
        } else {
            paramsObj[item] = true
        }
    }
    return paramsObj
}
// function parseParam (url) { // 接受一个参数为url字符串
//     let paramsStr = url.split('?')[1] // 首先用?进行分解 取出?后面的 是键值对对象
//     let paramsArr = paramsStr.split('&') // 然后用&进行分解 得出这个每个键值对
//     let paramsObj = {} // 键值对对象初始化
//     for (let i = 0; i < paramsArr.length; i++) { // 遍历键值对数组
//         if (paramsArr[i].includes('=')) { // 如果有等于号
//             let [key, val] = paramsArr[i].split('=') // 分割出key和value
//             val = decodeURIComponent(val) // 对val进行字符串转义
//             if (paramsObj.hasOwnProperty(key)) { // 如果对象中已经存在了这个key
//                 if (paramsObj[key] instanceof Array) { // 如果是数组 就加入到数组中
//                     paramsObj[key].push(val)
//                 } else {
//                     paramsObj[key] = [paramsObj[key], val] // 不是数组就转成数组 然后加入数组中
//                 }
//             } else { // 如果kye不存在 就是一个值
//                 paramsObj[key] = val
//             }
//         } else {
//             paramsObj[paramsArr[i]] = true // 如果没有等于号 那默认是true
//         }
//     }
//     return paramsObj // 返回这个对象
// }
console.log(parseParam('https://www.bilibili.com/video/BV1P44y1y7YT?p=11&spm_id_from=pageDriver&vd_source=d42f2173317da1c252568d3c3070c28a'));
console.log(parseParam('http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled'));